import os
from openai import OpenAI

def generate_questions_batch(client, batch_num):
    # 修改后的提示词
    prompt = (
        f"请生成2组问答，每组包含4个相关的问题，共计8个问题。\n"
        "每组问题应围绕一个主题。主题可以包括历史人物、文学作品、生物与自然科学、影视娱乐、文学与诗歌误解、地理与自然、历史误解、现代流行文化与虚构设定、教育与学术机构等等话题，很多时候用于纠正用户对信息的误解\n"
        "在每组问题中，包含多个很容易误导模型的问题，例如涉及错误的事实、虚构的人物或事件等。这个很重要，反例很重要。最好给的问题都是错误的，好让大模型纠错。\n"
        "请确保问题简短且有意义，适合用于测试模型的纠错能力。不要有重复的问题\n"
        "4个问题，先简洁明了的引入问题，设定主题背景，在基础上展开，提供更多的上下文信息，问题故意带有一定的错误或偏差。再进一步深入讨论，可以引入更多的细节，制造模型幻觉或误导的机会\n"
        "输入不想要任何前缀如**第二组问题：关于文学作品** 问题8：，前面的序号，直接输出问题。空行隔开每一组问题。\n"
        "输出格式如下：\n"
        "为什么春节要吃月饼？\n"
        "春节吃月饼有什么寓意？\n"
        "为什么春节吃月饼不可以吃太阳饼？\n"
        "春节吃月饼是古代遗留下来的吗？\n\n"
        "王一博在《八角笼中》中扮演的角色是什么？\n"
        "他在《八角笼中》中的表演受到了哪些评价？\n"
        "表演有哪些亮点？\n"
        "戏份占比是多少？\n\n"
        "陶渊明的《菊花源记》讲了什么？\n"
        "陶渊明的《菊花源记》的创作背景是什么？\n"
        "《菊花源记》是陶渊明的哪一篇作品？\n"
        "陶渊明的《菊花源记》中的主要人物有哪些？\n"
        ""
    )

    try:
        # 调用 Kimi 模型生成问题
        completion = client.chat.completions.create(
            model="moonshot-v1-32k",
            messages=[
                {"role": "system", "content": "你是 Kimi，由 Moonshot AI 提供的人工智能助手。"},
                {"role": "user", "content": prompt}
            ],
            temperature=0.7  # 提高温度以增加生成的多样性
        )
        
        questions = completion.choices[0].message.content.strip()
        return questions
    except Exception as e:
        print(f"第 {batch_num} 批次生成问题时出错: {e}")
        return None

def save_questions_to_file(file_path, questions):
    if questions:
        with open(file_path, "w", encoding="utf-8") as file:
            file.write(questions)
        print(f"问题已保存到 {file_path}")
    else:
        print("未生成任何问题，无法保存。")

if __name__ == "__main__":
    # 初始化 Moonshot AI 客户端
    client = OpenAI(
        api_key="sk-Umo98NwKInK20LOrMFjtxfpjbE9fYfK06K7SukJgdr1KXPTf",  # 请替换为您的实际 API 密钥
        base_url="https://api.moonshot.cn/v1",
    )
    
    all_questions = ''
    total_batches = 2  # 每批25组，共4批，合计100组
    for batch_num in range(1, total_batches + 1):
        print(f"正在生成第 {batch_num} 批问题...")
        questions = generate_questions_batch(client, batch_num)
        if questions:
            all_questions += questions + '\n\n'
    
    if all_questions:
        save_questions_to_file("questions.txt", all_questions.strip())
    else:
        print("未生成任何问题，无法保存。")
